import numpy as np
import matplotlib.pyplot as plt
from res_data import res_list
from freq_gen import freq_lis

def display_line_chart(n):
    # 获取当前数据
    response_data = res_list[n][:88]  # 取前88项
    frequencies = [freq_lis[i][0] for i in range(88)]  # 取频率

    # 创建折线图
    plt.figure(figsize=(10, 6))

    # 绘制对数坐标的折线图
    plt.plot(frequencies, response_data)

    # 设置图表的标题和标签
    plt.title(res_list[n][88])  # 使用第89项作为标题
    plt.xlabel('Frequency (Hz)')
    plt.ylabel('Amplitude')

    # 设置X轴为对数尺度
    plt.xscale('log')

    # 绘制网格
    plt.grid()

    # 绘制图表
    plt.show()

def main():
    # 询问用户输入的条目范围
    while True:
        user_input = input("输入要显示的条目索引（如 'n'）或范围（如 'n~m'），或输入'exit'退出：")

        if user_input.lower() == 'exit':
            break

        try:
            # 处理范围输入
            if '~' in user_input:
                n, m = map(int, user_input.split('~'))
                for i in range(n - 1, m):  # 调整索引为从0开始
                    display_line_chart(i)
            else:
                n = int(user_input)
                display_line_chart(n - 1)

        except (ValueError, IndexError):
            print("无效输入，请输入有效的索引或范围。")

# 运行主程序
if __name__ == "__main__":
    main()